Method and apparatus for facilitating control of a target computer by a remote computer

ABSTRACT

A method of capturing video from a target computer to update a remote computer&#39;s video with the video output of the target computer. The new video frame comprises a series of new frame pixels to be captured The method comprises (A) receiving for comparison a new frame pixel from the series; then (B) comparing the new frame pixel to a corresponding reference frame pixel; then (C) if the final new frame pixel has not been captured, repeating steps A and B for the next new frame pixel in the series.

FIELD OF THE INVENTION

This invention relates to the field of computer maintenance, and inparticular, the field of computer network maintenance.

BACKGROUND OF THE INVENTION

As computer networks have become more and more extensive, the challengesassociated with maintenance and control of such networks have becomeexponentially larger. In a typical setting, the operators of computerstations are not the same people as those who maintain the computerhardware and software. In the case of computer server hardware, thereare no explicit operators, in the sense that computer servers are notused directly by users to do their work. Instead, users typically dotheir work at one of many computers connected to the server. Thus, inthe case of computer servers, the servers are only used directly whenmaintenance is being performed on the server. As computer networks havebecome larger, it has become necessary to have specialized groups ofpeople responsible for maintenance of computer equipment, includingservers.

Maintenance of computers takes a number of forms. For example, itinvolves fixing computer equipment after it has failed. However, in anattempt to reduce downtime, many owners of computer networks have takena preventative approach to maintenance. Preventative maintenanceincludes monitoring for problems, solving problems after they aredetected, and deploying upgrades to prevent future problems. Maintenancemay also include the adding of features, applications and data to thecomputer.

The increased size of computer networks has also led to a change in thephysical arrangement of networks, and the way they are communicated withby maintenance personnel. Often, computer networks are very large, andmay include hundreds or even thousands of servers located in separateserver rooms far removed from the location of maintenance personnel.Therefore, direct use of the servers by maintenance personnel isimpractical. Furthermore, even if the maintenance personnel are onlocation, it is impractical for them to conduct maintenance activitieson hundreds or thousands of target computer servers by moving physicallyfrom one server to the next.

One basic requirement for maintenance personnel, in accomplishing theirtask of monitoring the target computers, is that the status informationbeing monitored be made available to the maintenance personnel. Thereare two main categories of target computers that maintenance personnelwould typically monitor. The first consists of computers that areprimarily based on a graphical interface, and the second consists ofcomputers that are primarily based on a command line interface. Ingraphical interface-based computers, such as those using the Windows™operating system, the system information is available as a graphicaldisplay on the target computer's screen. Therefore, to have thisinformation, maintenance personnel at a remote location must have accessto the target computer's video in order to monitor the target computer.

In command line-based computers, such as those using Unix™ orUnix-derivative operating systems, a log file is generally availablewith periodic status reports. This log file would be available to alocal user of a computer and could be displayed on the screen. Formaintenance personnel to monitor such a computer, they need to haveaccess, at the remote location, to this log file.

In addition, maintenance personnel must be able to choose among varioustypes of information available from the target computer in order tomonitor effectively. This involves the maintenance personnel havingaccess to the standard input devices of the target computer. Typically,the standard input devices are the keyboard and mouse, but they may alsoinclude such items as graphic tablets and serial console ports.

Conducting maintenance activities involving upgrades also requirescontrol of the target computer. This includes having access to thescreen shot or log file, and the standard input and output devices ofthe computer. It is also necessary for maintenance personnel to haveaccess to the media on which the upgrade information are stored. If themedium is, for example, a CDROM or floppy disk, the maintenancepersonnel have historically needed to be physically present at thetarget computer to insert the CDROM and swap CDROMs as required.

In the past, to provide the necessary access for maintenance personnelto the target computers, “KVM” switches were developed. “KVM” stands forKeyboard Video and Mouse. The purpose of a KVM switch is to provideremote access to a target computer.

Early KVM switches were analog, connecting one or more target computersand one or more remote users. This would allow a remote user to select,usually by moving a mechanical switch, which target computer's keyboard,video and mouse he would have access to.

Analog KVM switches can be relatively inexpensive. As well, their“perceived performance” can be quite good, meaning that a user accessinga target computer from a remote location from an analog KVM switch willhave an experience very similar to the experience he would have if hewere using the target computer directly. However, analog KVM switcheshave a number of disadvantages. Very basic analog KVM switches requirethe operator to be co-located with the target computers. In other words,if a user wishes to have access to eight different computers through abasic analog KVM switch, he must be co-located with those eightcomputers, and can access each one in turn by actuating the switch. Touse analog KVM switches in circumstances where the user is locatedremotely from the target computers, analog KVM extenders are required.However, even analog KVM extenders often place strict constraints on thephysical distance between the user the target computers. Such extenderstypically require that the user be located within 300 metres of thetarget computers.

Another disadvantage of analog KVM switches is that they are not easilyscalable. In other words, creating networks of KVM switches, and addingadditional target and remote computers to that network is difficult,usually resulting in escalating costs and reduced performance. U.S. Pat.Nos. 5,721,842; 5,884,096; 5,937,176; 6,378,009; and 6,388,658 disclosevarious analog KVM switches and extenders having these disadvantages.

Another related problem with analog KVM switches is that if the remotesite is far removed from the target site, the receiver of the KVM switchmust be hand-tuned for optimal video performance. Without such handtuning, the video quality at the remote computer suffers, resulting inan lower-than-optimal perceived performance. The requirement ofhand-tuning makes the installation of a network of analog of KVMswitches cumbersome and expensive.

Subsequent to the development of analog KVM switches, digital KVMswitches were developed. A digital KVM switch is typically connected onone side to a target computer. The other end of the switch is connectedto a LAN port, and ultimately to the internet or another network. Theremote computers receive the target video, and transmit keyboard andmouse signals, over that network. Unlike the analog approach toswitching video, keyboard and mouse information, the digital KVMdigitizes the video received from the target computer, and thentransmits it to the remote computer via the LAN link.

Digital KVMs may also be attached to multiple target computers via ananalog KVM switch. This allows the digital KVM switch to access morethan one target computer. In some products, the digital KVM and analogKVM are integrated into the same unit.

A typical digital KVM switch consists of an analog-to-digital converter(ADC) for capturing the target's video signal and converting it todigital format; a frame storage device, sometimes referred to as a“frame grabber”; and a CPU. U.S. Pat. No. 6,539,418 discloses a KVMswitch with these general features.

A typical target computer puts out a video signal containing a verylarge amount of raw data. A typical video resolution is 1024 pixels perhorizontal video line, with 768 lines per video frame and 60 completeframes transmitted per second. Each pixel on a colour monitor may have ared component, a green component and a blue component. Most computersuse 8 bits of information for each of these components, resulting in a24-bit colour word representing each pixel. In this example, then, thetarget video signal consists of 1,132,462,080 bits per second (1.132gigabits). This bit rate is substantially higher than the capacity ofany practically-available LAN connection. As a result, digital KVMdevices typically use some form of video data reduction technology. Oneapproach is to compare successive video frames and extract pixeldifferences between successive frames. This uses far less bandwidth thentransmitting every whole new frame to the remote computer. In onetypical difference calculation method, the digital KVM switch capturesan entire video frame. After the entire new video frame is captured,each pixel is compared with the corresponding pixel in the previousvideo frame. Once all the pixel changes have been determined, thedifferences between the new frame and the previous frame are sent to theremote computer, and the video on the remote computer is updated tomatch the new frame that has been received from the target computer.

Digital KVM technology has an advantage over analog KVM technology, inthat it is better able to handle situations where the remote computer isdistant physically from the target computer or computers. However,digital KVM also introduces a number of disadvantages not present withanalog KVM technology. The first main disadvantage is perceivedperformance. With digital KVM, there is often a noticeable lag at theremote computer between when a control input occurs (e.g. the movementof a mouse) and when the video display shows the response (e.g. themouse arrow moving on the screen). The size of this time lag can berelated to several factors. The first factor is how quickly the digitalKVM switch can calculate differences in successive video frames. Thelonger such calculation takes, the longer it will take to see theresults of a control input on the video screen of the remote terminal.Also, longer difference calculation times can lower the number of framesthat are actually processed by the KVM switch. For example, in a videosignal consisting of 60 frames per second, a new frame is generatedevery 16.7 milliseconds. However, if the difference calculation takes 32milliseconds, then the KVM switch will have to skip at least everysecond frame. When frames are missed by the KVM switch, the motion onthe video screen of the remote terminal will appear jerky, with missinginformation, rather than smooth, as is would be the case if every framewere processed by the KVM switch.

The second factor affecting speed is the amount of time the digital KVMtakes to generate the data to be sent to the remote terminal. The KVM,after calculating the differences between a new frame and the previousframe, must then translate the difference information into actual framepixel information. In a typical digital KVM, the frame grabber capturesa single frame of video. After that frame is captured in its entirety, amicroprocessor loads the frame into its own working memory. Thedifference calculation is performed by the microprocessor to determinethe differences between the just-captured frame and the previous frame.Then, the same microprocessor translates that difference informationinto actual frame pixel information.

This typical KVM implementation creates certain disadvantages. Asdescribed above, the rate of data being generated by the targetcomputer's video signal is very large. Thus, the digital KVM requires aCPU with a very high data processing rate, which translates into higherCPU costs. In addition, there is less processing power available forother features. In some applications, security concerns require that thedigital KVM be able to encrypt its video, keyboard and mouseinformation, so that the data cannot be easily intercepted. This isparticularly important in cases where the KVM is connected to the remotecomputer via the internet. However, such encryption requiressignificantly more CPU processing power. Historically, this extra powerrequirement has been a barrier to traditional digital KVM technologyproviding encryption, except at much higher system costs, or bysacrificing perceived performance.

There are other issues raised by the specific method by which digitalKVM technology operates. In analog KVM technology, the target computer'svideo signal is simply received and routed to the remote computer.However, digital KVM technology requires digitizing the video signal,and then calculating differences between the new frame the previousframe. A typical video signal has a particular predetermined resolutionwhich specifies the number of pixels per line, and the number of linesper video frame. In the analog domain, each line of video has an activearea, where the actual screen picture information is contained, and ablanking area, usually represented in the colour black. The blankingarea is added to each line to provide the extra time between lines forrepositioning the scanning electron beams that create the image on thescreen. The blanking area at the end of each line contains ahorizontal-sync or H-sync pulse, which the monitor uses to determinewhen the electron beam should realign itself.

Similarly, the entire video frame has an active area and a blanking areacontaining lines not included in the active video region. During theblanking area, a vertical-sync or V-sync pulse is transmitted. Thispulse is used by the CRT to cause the electron beam to move back to thebeginning of the frame.

The time between the end of the H-sync pulses, and the start of theactive portion of the next line of video is arbitrary, but will beconstant for a particular implementation of a particular video rate orresolution. Similarly, the time between the end of the V-sync pulse andthe start of the active portion of the next video frame is arbitrary,but is also constant for a particular implementation of a particularvideo rate or resolution.

To a local user of a computer, a variance between different video ratescan be dealt with by adjusting certain control parameters. Most monitorshave a control to adjust the times between the sync pulses and theactive region of the video. When the beam speed is incorrect, thepicture will either appear “squished”, that is, smaller than the screen,or “stretched”, that is, larger than the screen. Most monitors have acontrol to adjust beam speed.

A remote user of a target computer through a KVM does not have access tothese controls on the target computers's monitor. Also, with digitalKVM, the ADC must extract each pixel from the analog video signal'swaveform. This is accomplished by sampling. Ideally, sampling will takeplace at the precise centre of the time allocated to each pixel.However, the pixels can be located only with reference to the syncpulses, and the location of the sync pulses is arbitrary.

There are a number of problems that can arise from improper predictionsof pixel timing, resulting in incorrect sampling. For example, the videoimage produced by the digital KVM could have some pixels or lines cutoff on the picture edges, or some pixels or lines added to the pictureedges. A further effect of incorrect pixel sampling is sample jitter. Ifpixels are sampled near the edges, instead of at their central point,then the repeated sampling of an unchanged pixel will sometimes resultin one sampled value. Such dithering between two or more similar valueswill cause the KVM to think that a pixel has changed, even if it hasnot. This results in the generation of extraneous data, and unnecessarybandwidth usage. This in turn results in slower response times of theKVM, since there is less bandwidth available to transmit the realdifferences between the current frame and the previous frame.

SUMMARY OF THE INVENTION

Therefore, what is preferred is a KVM system or method which addressesone or more of these problems. The invention will preferably include aKVM system or method having increased processing speed. Preferably, thesystem will reduce bandwidth usage and provide good usability andperceived performance for the user of the remote computer.

In one aspect of the invention, there is provided a method of capturinga new video frame from a target computer to permit the updating of aremote computer with the video output of the target computer, whereinsaid new video frame comprises a series of new frame pixels to becaptured, which series includes an initial new frame pixel to becaptured and a final new frame pixel to be captured, the new framepixels to be captured being represented in a video signal from thetarget computer, the method comprising the steps of, beginning with theinitial new frame pixel: (A) receiving for comparison a new frame pixelfrom the series; then (B) comparing the new frame pixel to acorresponding reference frame pixel; then (C) if the final new framepixel has not been captured, repeating steps A and B for the next newframe pixel in the series.

Preferably, step B comprises the steps of determining if said new framepixel is different from said corresponding reference frame pixel, and,if said new frame pixel is different from said corresponding referenceframe pixel, flagging a new frame update unit corresponding to said newframe pixel if said corresponding new frame update unit has not alreadybeen flagged.

In another aspect of the invention, there is provided a system forcapturing a new video frame from a target computer to permit theupdating of a remote computer displaying the video output of the targetcomputer, wherein the new video frame comprises a series of new framepixels to be captured, which series includes an initial new frame pixelto be captured and a final new frame pixel to be captured, the systemcomprising a comparison module and a memory module operatively connectedto said comparison module, the comparison module being configured toreceive for comparison the initial new frame pixel from said targetcomputer; then, compare the initial new frame pixel to a correspondingreference frame pixel and save the initial new video frame pixel in thememory module; then, if the final new frame pixel has not been captured,repeat said receiving, comparing and saving steps in respect of the nextnew frame pixel in the series.

In another aspect of the invention, there is provided a method ofproviding updated video from a target computer to a remote computer, themethod comprising the steps of:

-   -   (A) performing the method of comparing as described above;    -   (B) searching for flags indicating flagged new frame update        units; and    -   (C) moving flagged new frame update units to a reference frame        output location for eventual transmission to the remote        computer.

In another aspect of the invention, there is provided a method ofdetermining whether to reacquire a video signal from a target computer,wherein the video signal of the target computer is being compared withreference video, and update data is being generated from the comparisonfor transmission to a remote computer, the method comprising the stepsof:

-   -   (A) monitoring a first condition indicating information about a        resolution of the video signal;    -   (B) monitoring a second condition indicating information about        the resolution of the video signal;    -   (C) if the second condition changes so as to indicate a change        in the resolution, but the first condition does not change so as        to indicate a change in the resolution, suspending comparison        and update data generation and continuing to monitor the first        condition to determine whether to reacquire the video signal;        and    -   (D) if the second condition continues to indicate a change in        the resolution, and the first condition changes so as to        indicate a change in the resolution, determining that the video        signal will be reacquired.

In another aspect of the invention, there is provided a method ofupdating video from a target computer on a remote computer, the methodcomprising the steps of:

-   -   (I) comparing a video frame from the target computer to        reference video;    -   (ii) generating data in the comparing step for use in updating        the remote computer;    -   (iii) reacquiring the video signal by performing the method of        claim 31;    -   (iv) when the video signal has been reacquired, resuming said        comparing and generating steps.

In another aspect of the invention, there is provided a digital KVMsystem comprising:

an analog-to-digital converter for digitizing an incoming video signalto produce a series of new frame pixel digital values;

a difference calculator for calculating the difference between each newframe pixel digital value and a corresponding reference frame pixeldigital value, the difference calculator comprising a field programmablegate array.

In another aspect of the invention, there is provided a method forimproving the promptness with which movement of a mouse at a remotecomputer is shown on the screen of the remote computer, wherein themouse is used to create inputs to a target computer via a digital KVM,and the screen of the remote computer is updated by the digital KVM todisplay the video from the video signal of the target computer, themethod comprising the steps of:

maintaining a representation of an initial position of the mouse;

receiving at the KVM an indication that the mouse has moved;

in response to the indication, interrupting a preprogrammed updatingsequence of the KVM and updating the video of the remote computer toreflect the mouse movement; and

resuming the preprogrammed sequence.

In another aspect of the invention, there is provided a system forregulating the transmission of video update units to M remote computers,M being a whole number greater than or equal to one, wherein video frameinformation is being received from a target computer and video updateunits being generated in response thereto, and wherein each remotecomputer is being updated with the update units via a correspondingcommunication channel having a corresponding speed, the systemcomprising:

an update unit generator and an update unit output location for holdingfor transmission pending update units generated by the update unitgenerator;

a scanner associated with each channel, each said scanner beingconfigured to cause transmission of the pending update units from theoutput location according to a preprogrammed sequence, each scannerhaving an operating speed that is coordinated with the speed of thecorresponding channel;

the update unit generator, output location and scanners being configuredsuch that, if a pending update unit is superseded by a new version ofthe pending update unit prior to being transmitted, the new version willbe transmitted and the version of the pending update unit that wassuperseded will not be transmitted.

Preferably, the output location is configured to hold only a most recentversion of each pending update unit, and not superseded pending updateunits. Preferably, each update unit comprises a tile corresponding to aregion of video screen pixels. Preferably, the system further includesoutput location individual tilestamps, the output location individualtilestamps being associated with the output location, with an outputlocation individual tilestamp corresponding to each tile, the systemfurther including output location row tilestamps corresponding to eachrow of tiles, said output location row tilestamps being associated withthe output location and corresponding to each row of tiles, the outputlocation being configured such that the output location individualtilestamps are each incremented each time the corresponding tile istransferred to the output location for transmission.

Preferably, the system further includes a tilestamp storage locationassociated with each scanner and its corresponding remote computer, eachscanner tilestamp storage location including a storage locationindividual tilestamp associated with each tile and a storage locationrow tilestamp associated with each row of tiles, each scanner andcorresponding tilestamp storage location being configured such that thepreprogrammed sequence comprises:

-   -   (A) scanning each storage location row tilestamp;    -   (B) comparing each storage location row tilestamp to the        corresponding output location row tilestamp;    -   (C) if the storage location row tilestamp differs from the        corresponding output location row tilestamp, determining that        the corresponding row contains at least one tile to be        transmitted;    -   (D) scanning the storage location individual tilestamps        corresponding to tiles within the corresponding row, comparing        them to the corresponding output location individual tilestamps,        transmitting each tile for which a difference is found between        the corresponding storage location tilestamp and the        corresponding output location tilestamp, incrementing the        corresponding storage location tilestamp to make it equal in        value to the corresponding output location individual tilestamp,        and resuming the sequence at step A.

In another aspect of the invention, there is provided a device forpermitting control of a target computer by a remote computer, whereinthe device is operatively connectable to the remote computer so as toreceive remote computer mouse and keyboard signals and transmit videoupdate data to the remote computer, the device further being operativelyconnectable to the target computer so as to provide the remote computerkeyboard and mouse signals as control inputs to the target computer andso as to receive a target computer video signal for generation of videoupdate data, the device including a virtual memory disk, the virtualfloppy disk comprising a memory space associated with the device, thedevice being configured to permit a user of the remote computer to mountthe device to the remote computer, transfer data to the virtual memorydisk, and unmount the virtual memory disk, the device further beingconfigured to permit the user, by controlling the target computerthrough the remote computer, to mount the virtual memory disk to thetarget computer, transfer the data to the target computer, and unmountthe virtual memory disk from the target computer.

BRIEF DESCRIPTION OF THE DRAWINGS

Reference will now be made, by way of example only, to drawings of theinvention, which illustrate the preferred embodiment of the invention,and in which:

FIG. 1 is a schematic drawing of a remote computer, target computer andKVM switch according to the present invention;

FIG. 2 is a schematic diagram of multiple remote computers, a KVM switchand multiple target computers according to the present invention;

FIG. 3 is a schematic diagram of a KVM switch according to the presentinvention;

FIGS. 4A and 4B show the KVM in capture and update modes according tothe present invention;

FIG. 5 shows the steps involved in acquiring a video resolution anddetermining whether to reacquire video resolution according to thepresent invention;

FIG. 6 is a schematic diagram of the tile staleness buffer according tothe present invention;

FIG. 7 is a diagram showing a properly phase-adjusted sampling clock;

FIG. 8 is a diagram showing an improperly phase-adjusted sampling clock;

FIG. 9 shows a test pattern according to the present invention;

FIG. 10 is a schematic diagram of the virtual keyboard, mouse and floppyaccording to the present invention; and

FIG. 11 is a diagram of an analog waveform representing an stream ofalternating black and white pixels.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

Referring now to FIG. 1, a target computer 12 is shown. In theembodiment shown in FIG. 1, KVM switch 14 is connected directly totarget computer 12, and receives the video signals of target computer12. In the embodiment shown in FIG. 2, N target computers 12 (N>1) areconnected through an analog KVM switch 16 to the digital KVM switch 14.In this way, users of one of M (M>1) remote computers 20, as will bemore particularly described below, can receive the video signals of anyone of N target computers 12, and control those target computers 12 bythe keyboard and mouse signals being transmitted thereto. The user of aremote computer 20 can choose which target computer 12 is controlled byswitching the analog KVM switch 16.

The KVM switch 14 is connected, preferably via a LAN port 16, to theinternet, designated by reference numeral 18. The remote computer 20receives information from the KVM switch 14 via the internet 18. It willbe appreciated that the connection between the KVM switch 14 and theremote computer 20 need not necessarily be via a LAN port 16 and throughthe internet 18, as preferred. It is possible for the connection to takeany form which permits the transmission of digital video data from theKVM switch 14 to the remote computer 20. What is important is that theremote computer 20 be connected to the KVM switch 14 in a manner thatallows it to receive video update data from the KVM switch 14.Nevertheless, it will be appreciated that the preferred mode ofconnection between the KVM switch 14 and the remote computer 20 is onewhich permits the efficient transmission of digital video data from theKVM switch 14 to a remote computer 20, the remote computer 20 beingremotely located from the KVM switch 14 and the target computer 12.

The remote computer 20 is connected, via the internet 18, to the KVMswitch 14, which receives from the remote computer 20 its keyboard andmouse outputs. Those outputs are routed through the KVM switch 14 to thetarget computer 12. Thus, the remote computer can be used to control oneor more target computers 12. Through the KVM switch 14 and the internet18, the remote computer 20 receives video from the target computer 12.The video thus received can be displayed on the screen of the remotecomputer 20, allowing the operator at the remote computer to see theoutput of the target computer 12. As explained above, this output cantake the form of information presented on a graphical interface (e.g.Microsoft Windows) or, it can take the form of a log file present on thetarget computer 12, showing its status.

To effect control of the target computer 12, the keyboard and mouseoutputs of the remote computer 20 are routed to the target computer 12via the internet 18 and KVM 14. The KVM 14 is connected to the targetcomputer(s) 12 such that the keyboard and mouse signals from the remotecomputer 20 are treated by the target computer 12 as its own keyboardand mouse. Thus, action taken with the keyboard and mouse at the remotecomputer 20 have the same effect on the target computer 12 as if thoseactions have been taken locally, at the target computer 12.

FIG. 3 shows preferred components included in KVM 14. These include theanalog-to-digital converter (ADC) 22, a central processing unit (CPU)36, a synchronous dynamic random access memory (SDRAM) 38 and a fieldprogrammable gate array (FPGA) 40. The specific functioning of thesecomponents will be more particularly described below. It will beappreciated that, though the SDRAM 38 is shown schematically as a singleblock, it may be implemented as more than one SDRAM component. Also, theSDRAM 38 may be apportioned such that the CPU 36 and FPGA 40 each haveexclusive access to particular portions of the SDRAM 38.

The KVM 14 also preferably includes the CPU's non-volatile RAM (NVRAM)37, which preferably stores, inter alia, the CPU program, the FPGAconfiguration, the video resolution table described below, and othersystem information.

It will be appreciated by those skilled in the art that the memory inthe KVM 14 need not be organized in this preferred manner to becomprehended by the invention. What is preferred, however, is thatsufficient and properly-configured memory be provided to perform thefunction herein described.

Referring now to FIG. 4A, the KVM 14 and FPGA 40 are shown in videoframe capture mode, i.e. the mode in which the new video frame isreceived for comparison and compared to the previous one. In thepreferred embodiment, the analog video signal from the target computeris converted to a digital signal by the ADC 22. The output of the ADC 22is a series of digital values, each of which represents a pixel of thevideo frame being received by the ADC.

The digital KVM 14 preferably includes a new frame storage buffer 24 anda reference frame storage buffer 26. Most preferably, these buffers24,26 are implemented in the SDRAM. As each pixel value is outputted bythe ADC 32, it is stored in the new frame storage buffer 24, whosefunction it is to act as a storage location for the new video framecurrently being received by the ADC 22 and converted to a digitalsignal.

As each pixel is stored in the new frame storage buffer 24, that pixelis also compared by the FPGA 40 with the corresponding pixel from theprevious (or reference) frame, which is read by the FPGA 40 from thereference frame storage buffer 26. The reference frame storage buffer 26stores the frame that was received prior to the frame that is currentlybeing received and stored in the new frame storage buffer 24. The timingof the reading of the reference pixel and the writing of thecorresponding new to pixel to the new frame storage buffer 24 iscontrolled such that each pixel from the new frame is compared with thecorrect, corresponding, pixel from the reference frame.

If the pixel from the new frame is sufficiently different from thecorresponding reference frame pixel, then a flag is set in a tiledifference buffer 28 to indicate that the new frame update unit (definedbelow)corresponding to the new video frame pixel contains a pixel thathas changed from the corresponding unit in the reference frame.

As will be more particularly described below, the digital KVM, in updatemode, will send the new frame update unit identified in the tiledifference buffer 28 to an output location for transmission to theremote computer 20. Thus, the new frame update unit is a unit,comprising a portion of the video frame, that is sent to the remotecomputer 20 to update the remote computer's video output. It will beappreciated that a new frame update unit can comprise an individualpixel, or a plurality of pixels. Preferably, the new frame update unitcomprises a tile, which is defined as an area of the video screen thatis precisely 16 pixels wide and 16 pixels high. This implementation ofthe new frame update unit is preferred because the digital KVM 14 willpreferably use the public domain VNC protocol for transmitting video,and the use of 16 by 16 tiles facilitates the use of this protocol. Itwill be appreciated that, because the tile includes 256 pixels, it willoften be the case that more than one pixel in a tile will change fromone frame to the next. Therefore, as the FPGA 40 compares each pixel,the first pixel difference will cause the corresponding tile to beflagged. However, other pixel differences in the same tile will notcause the tile to be flagged, because it has already been flagged as aresult of the first pixel difference.

The FPGA 40 further preferably includes a difference counter 31 whichcounts the number of pixel differences found in each comparison betweena new video frame and a reference video frame.

Once an entire new frame has been received, and stored in the new framestorage buffer 24, the digital KVM 14 switches to “update” mode. Thismode is described in FIG. 4B. In update mode, the difference scanner 30(which is preferably programmed and implemented as part of the FPGA 40)scans through the tile difference buffer 28, searching for flagsindicating tiles containing pixels that have changed from the referenceframe to the new frame. When a flag, indicating that a particular tilehas changed, is found, then that tile is extracted by the FPGA 40 fromthe new frame storage buffer 24 and placed in the FPGA's tile outputbuffer 32. Preferably, the CPU 36 then copies the tile into thereference frame storage buffer 26 which preferably acts as both anoutput location from which the flagged tiles are eventually transmittedto the remote computer 20, and a reference frame storage location fromwhich the reference frame is read-for comparison purposes. In onepreferred embodiment, the reference frame storage buffer 26 isimplemented as two separate memory locations. Both locations contain thesame data. The first location, associated with the FPGA 40, acts as thereference frame storage location used for comparison purposes, to whichchanged tiles are moved from the buffer 24 by the FPGA during updatemode. The second location, associated with the CPU 36, acts as an outputlocation from which tiles are transmitted, and to which changed tilesare moved from the buffer 32 by the CPU 36. It will be appreciated thatother configurations, in which the reference frame output and storagelocations are implemented in a variety of memory configurations, arecomprehended by the invention.

After the tile difference buffer 28 has been thoroughly scanned for allflags indicating changes in video tiles, and once all of the flaggedtiles have been moved to the tile output buffer 32 for transmission tothe remote computer 20, the digital KVM reverts to “capture” mode andawaits the start of the next video frame. Once the next video framebegins, the above-described procedure for capturing the video frame isrepeated.

In addition to each tile that has been flagged during the capture phase,the tile output buffer 32 also contains a status word associated witheach such tile, which status word is transmitted to the remote computer20. Two fields in the status word are the tile's horizontal and verticalcoordinates on the video screen; this screen location data is moved tothe tile output buffer 32 for transmission to the remote computer, topermit the tile to be displayed by the remote computer at theappropriate location.

In addition, the “average” colour of the tile is calculated, and therelevant value is moved to a third field of the status word. The“average” colour calculation is an averaging of the individual red,green and blue components in the pixels of each tile. While the averagecolour is calculated, the FPGA 40 scans the tile to determine if all ofits pixels are the same colour. If so, the FPGA 40 sets a single colourflag in the status word.

There are two purposes for the average colour calculation. The first isthat, if the user of the remote computer 20 causes a section of a screento be reduced to a thumbnail (e.g., reduced by a factor of 16), theneach tile, which is 16 pixels by 16 pixels, would show up in thethumbnail as a single pixel. The colour used for that pixel would be the“average” colour. As will be understood by those skilled in the art, thecalculation of average colour facilitates the use of VNC scalingfeatures, such as the one just described.

Anther purpose of generating average colour data is to reduce the amountof data that must be transmitted from the KVM 14 to the remote computer20 in the event that all of the pixels in the relevant tile are the samecolour. It is common for large contiguous areas of the screen to havethe same colour. For example, in text documents, the margin of thedocument will typically be entirely white. Similarly, in most windows,the edges or borders are a consistent colour.

When all of the pixels of a flagged tile have the same colour, it isunnecessary to send the data associated with all of the pixels in thetile. Rather, the CPU 36 can instead transmit only the coordinates ofthe tile and its colour. The bandwidth used in transmitting the tile isthus greatly reduced. This reduction in bandwidth results in fasterrendering of the screen on the remote computer 20, as there is less datato be processed by the KVM 14 and the remote computer 20.

The last field in the status word is a flag which indicates if the tileis the first tile of the frame. Using this information, the CPU 36 thatoperates the digital KVM 14 knows when one frame ends and a new framebegins. This information is useful for video alignment and adjustmentalgorithms described below.

After the flagged tiles are moved to the tile output buffer 32, the FPGA40 generates an interrupt request to the CPU 36 if at least one changedtile is contained in the tile output buffer 32. Note that, if no pixelshave changed from the reference frame to the new frame, no tiles will beresident in the tile output buffer 32. After the interrupt request issent to the CPU 36, the tile output buffer 32 holds all of the flaggedtiles until the CPU 36 extracts them from the tile output buffer 32 fortransmission to the remote computer 20.

It will be appreciated that the KVM 14 thus acts as a system forcomparing the new video frame from the target computer 12 to thereference video frame. Each new video frame comprises a series of newframe pixels to be captured, the series including initial and final newframe pixels to be captured. The FPGA 40 is programmed to function as acomparison module which receives the new video frame pixels to becaptured from the target computer 12 (through the ADC 22), and compareseach new video frame pixel to be captured (beginning with the initialone) to the corresponding reference video frame pixel. The FPGA 40 isprogrammed to read the reference pixels from the buffer 26. The FPGA 40then saves the new video frame pixel in the buffer 24, which ispreferably implemented in the SDRAM 38. The reference frame storagebuffer 26 is also preferably implemented in the SDRAM 38, whichfunctions as a memory module. The FPGA 40 then repeats the receiving,comparing and saving steps until the whole new video frame (includingthe final new frame pixel to be captured) has been compared to thereference video frame and saved in the new frame storage buffer 24. TheFPGA 40 is operatively connected to the SDRAM 38 and the ADC 22, thusallowing the new frame pixels to be saved to the buffer 24, referenceframe pixels to be read from the buffer 26, and new frame pixels to bereceived from the ADC 22.

It will be appreciated that the above-described difference calculationmethod has certain useful characteristics. The first is speed. In theabove described preferred method, as each new frame pixel is received bythe digital KVM 14, it is compared to the corresponding reference framepixel immediately, and if the pixel is different, then the titlecorresponding to the pixel is flagged in the tile difference buffer ifthat same tile has not already been flagged because of another pixeldifference. This process is repeated until the whole new video frame hasbeen received and compared to the reference video frame. The result isthat, by the time the new video frame has been completely received, theentire comparison between the new frame and the reference frame iscompleted. It will be appreciated that such a method represents animprovement in speed over a comparison method in which the new frame isreceived in its entirety first, and then the pixel-by-pixel comparisonbetween the new frame and the reference frame is performed.

To perform the preferred comparison method described herein, it ispreferable for the system components to be fast enough to compare newframe pixels to reference frame pixels at least as fast as the rate atwhich the new frame pixels are received by the KVM. If the comparison isnot done at least that fast, then some new frame pixels will be missed,and will not be compared to their corresponding reference frame pixels.The result would be an inaccurate rendering of the video signal at theremote computer. In software-based KVM systems, it can be difficult toachieve the desired speed. Therefore, it is preferable for thecomparison functions to be carried out by the FPGA 40. It will beappreciated that an FPGA has certain advantages. First, because it isprogrammable, its functionality can be changed relatively easily ifdesired, particularly as compared with unprogrammable hardware. Thisincludes reprogramming of the FPGA 40 by the CPU 36 during operation, ifdesired. On the other hand, when in operation, the FPGA acts essentiallyas hardware; the delays associated with software processing andexecution are greatly reduced in the FPGA 40. Because the FPGA 40 isessentially hardware, it operates substantially at the speed ofhardware. In summary, through the use of the FPGA 40, the digital KVMachieves at least some of the flexibility and convenience of software,while substantially achieving the operational speed of hardware.

It will be appreciated that, though strongly preferred, the FPGA 40 maybe programmed so as to miss some of the pixels of the incoming frame.Such a method is comprehended by the invention. It will be appreciated,however, that in such a case, the series of pixels to be captured wouldnot include missed pixels, but only pixels that the FPGA 40 isprogrammed to capture.

To accurately identify the screen location of pixels, and of tiles to betransmitted to the remote computer 20, the digital KVM 14 must know theresolution of the incoming video signal from the target computer 12.Most preferably, the KVM 14 will know the number of lines in each videoframe, the number of pixels per line, the number of blank lines beforeand after the V-sync pulse, and the number of pixels in the blankingarea on each line before and after the H-sync pulse. To have thisinformation, the KVM 14 will preferably function to determine theresolution of the incoming video signal.

The preferred method for determining when a new stable video resolutionis in use is as follows. First, the FPGA 40 detects a stable H-syncpulse. This is accomplished by counting the number of clocks betweensuccessive H-sync pulses to ensure that the time between successiveH-syncs is the same, within an allowable variance. If so, the H-sync isdetermined to be stable. Next, a stable V-sync pulse is detected bycounting the number of H-sync pulses between successive V-sync pulses.If the V-sync is stable, this indicates that a change to a newresolution has taken place.

As part of the ongoing resolution monitoring, the FPGA 40 monitors theH- and V-sync signals to ensure that the duration between successivepulses does not change. If the duration changes, the FPGA 40 ceasesvideo processing and indicates to the CPU 36 that video lock has beenlost.

The H-sync and the V-sync pulses do not have strictly standardizeddurations and positions. However, for a particular video source, andwithin a particular video resolution, they are consistent. Preferably,the FPGA 40 will be programmed to use its internal clock to measure theduration of the H-sync and the V-sync pulses, the times between theH-sync and the V-sync pulses, the times between the rising edges ofsuccessive H-sync pulses, and the number of H-sync signals betweenrising edges of successive V-sync pulses. Also, the senses of the H-syncand the V-sync pulses can be detected by comparing their active periodswith their inactive periods, since, by definition, their active periodsare much shorter than their inactive periods. Using the times betweenH-sync signals, the line frequency can be determined. Using the timebetween the V-signals, the frame rate is determined. However, theresolution is not yet known, in part because the number of pixels perline is not known. To estimate the number of pixels per line,preferably, the first step is to consult a table of video resolutionsstored in the KVM 14 which, using the parameters calculated above,provides an estimated number of pixels per line.

The Video Electronics Standards Association (VESA) has issued standardswhich specify various video resolutions, including the number of pixelsper line, the number of lines per frame, the number of blank pixels andlines, and the other parameters. Preferably, these standard resolutionsare stored in the table of video resolutions in the NVRAM memory spaceof the CPU 36. It will be appreciated, however, that the table can bestored in any memory where it would be available to be used to identifythe video the video resolution.

In practice, not all possible video resolutions will appear in thetable, because the VESA standards are guidelines, not bindingrequirements. Certain operating systems, such as Linux, maintain theirown set of resolutions. In the case of some operating systems, thespecifications for the particular resolutions may not be available.However, Linux is an open source system, so its video resolutionspecifications are available. Preferably, the table will include Linuxvideo resolution specifications, as well as the specifications of anyother known video resolutions likely to be in use by the target computer12.

It will be appreciated that, even if the table contains entries for manydifferent video resolutions, the actual video signal may not match anyof the entries in the table. Under such circumstances, the next step isto estimate the video signal resolution. Preferably, the resolution willbe estimated using the VESA Generalized Timing Formula (GTF). The GTF isa VESA guideline for estimating an unknown video resolution.

It will be appreciated that, even using the GTF, it cannot be guaranteedthat the exact resolution for the incoming video signal has beenidentified. This is because use of the GTF provides only an estimate ofthe resolution. However, once the best estimate is made, the parameterscan be adjusted and refined using a positioning method described below.

Once the estimate of the video resolution is obtained, the CPU 36programs the ADC 22 to sample the video and generate a pixel samplingclock. The frequency and timing of the clock are obtained by multiplyingthe number of pixels per line by the line frequency (i.e. the number oflines per second). The ADC 22 is then programmed to sample the incomingvideo at the pixel clock rate. Once the ADC-generated pixel clock hasstabilized, the sampled video signal from the ADC 22 can be used.

In the event that the video resolution changes, the KVM 14 preferablyresponds by determining the new video resolution. When a resolutionchange is detected, the KVM 14 preferably ceases the transmission ofvideo data to the remote computer 20, as any such data will be invaliduntil the new resolution is determined.

There are some cases where the FPGA 40 will actually not reacquire videoresolution even when the syncs change. Under the VESA standards, if theV-sync halts, but the H-sync continues, it means that the targetcomputer's CPU has caused the CRT monitor of the target computer 12 toenter “stand-by” mode. If the H-sync is halted but the V-sync isretained, that indicates that the CPU of the target computer has causedthe monitor to enter power-saving mode. In either of these two modes, ofcourse, it is not necessary to automatically reacquire video once thesyncs return, because it is not known if the video resolution haschanged. Instead, when either of these two modes is detected, the KVM'svideo processing (i.e. capture and updating) is simply suspended untilthe syncs return. A message is sent to the CPU 36 by the FPGA 40indicating that the video screen has entered power saving or stand-bymode. The CPU 36 sends a message to the remote computer 20 that thetarget video has entered standby or power-saving mode. While the targetvideo is in one of these modes, the remote screen is not updated but isotherwise unaffected.

There is another situation which the FPGA 40 may or may not reacquirevideo resolution when the syncs change. This situation results from theADC's susceptibility to noise. If there is a noise spike on the H-syncsignal generated by the ADC from the raw H-sync (i.e. the regeneratedH-sync), successive regenerated H-sync pulses will be either too closetogether or too far apart. The pixel sampling clock will also be eithertoo fast or too slow. These changes are not the result of an actualresolution change, but of noise. If the KVM's video capture circuitcontinues to operate under these conditions, the data it generates willbe incorrect, and the remote computer's screen may fill with garbage.However, if a reacquisition of the video signal takes place, then awhole new screen's worth of data will need to be sent to the remotecomputer 20, though the resolution of the video signal from the targetcomputer may not have actually changed.

Thus, this invention preferably includes a method for determiningwhether to reacquire the video signal from the target computer,illustrated in FIG. 5. The determination, as will be described below, ispreferably based on a determination of whether the H-sync has actuallychanged in a manner that indicates a change of resolution, or whetherthe change is a product of noise.

As described above, as the video signal is received and converted todigital by the ADC, it is compared with reference video, Then, updatedata (preferably in the form of tiles containing at least one pixel thathas changed) is generated from the comparison for transmission to theremote computer. As the KVM 14 operates, the FPGA 40 continuouslymonitors two conditions, which preferably are the raw H-sync signal,received directly from the target computer 12, and the regeneratedH-sync signal created by the ADC 22 in association with the comparisonand update data generation. Both the raw and regenerated H-syncsindicate information about the video signal resolution. If theregenerated H-sync changes so as to indicate a change in the videosignal's resolution, but the raw H-sync does not change to indicate achange in the resolution, video capture is suspended, and the FPGA 40continues to monitor the raw H-sync signal to determine whether toreacquire the video signal. The reason capture is suspended is that thecomparison will produce incorrect data anyway, given that theregenerated H-sync has moved out of alignment. On the other hand, thefact that the raw H-sync has not changed suggests that the videoresolution has not actually changed, despite the fact that themisalignment of the regenerated H-sync indicates a resolution change.

Next, if the regenerated H-sync continues to indicate a resolutionchange, and the raw H-sync changes so that it also indicates aresolution change, then the KVM 14 determines that the video signal willbe reacquired, and reacquisition of the video signal is initiated andcompleted. If, however, the regenerated H-sync recovers, while the rawH-sync has not changed, then the capture of video is reactivated,because this condition indicates that the regenerated H-sync hasreturned to proper alignment, and capture can resume without invaliddata being transmitted to the remote computer 20.

In addition, preferably, there is a timeout function built into thismethod. Thus, as explained above, if the raw H-sync has not changed butthe regenerated H-sync indicates a resolution change, then capture issuspended and the raw H-sync is monitored. However, the timeout functioncauses the video resolution to be reacquired if, within a predeterminedtime (preferably 5 seconds), the regenerated H-sync has not recovered.This reacquisition is initiated regardless if the raw H-sync status. Itwill be appreciated that, in many if not most cases, the failure of theregenerated H-sync to recover within 5 seconds indicates that there is aproblem with the ADC at its current settings. Thus, the regeneratedH-sync is unlikely to recover unless the video resolution is reacquired.

It will be appreciated that this method has certain advantages. Animportant advantage is that unnecessary video reacquisitions arereduced. When video is reacquired, displaying the first new framerequires an entire new screen's worth of data to be sent to the remotecomputer 20, which unnecessarily strains the resources of the KVM 14 ifthe resolution did not actually change. In addition, the reacquisitiontemporarily cuts off video to the remote computer 20. This causesinconvenience to the user of the remote computer 20, so it is preferredthat video reacquisition not take place unless it is necessary. Finally,this method reduces the transmission of invalid data by suspendingcapture until the regenerated H-sync error clears, thus conservingbandwidth.

It will also be appreciated that this method of determining whether toreacquire the video signal can be used with a variety of different videocapture methods. It is not limited to use with KVMs that use thepreferred capture method described above.

In some embodiments of the invention, the KVM 14 will have more than oneremote computer 20 connected to it (see FIG. 2). Such a configurationpermits the target computer 12 to be controlled by different remotecomputers 20. It will be appreciated that, under some circumstances, theability to control the target computer 12 from a number of differentlocations could be helpful and convenient for computer maintenancepersonnel.

In such a configuration, each remote computer 20 has its own connectionfor receipt of the video information from the KVM 14. These connectionsare also known as “clients”. It will be appreciated that the channelsbetween the KVM 14 and each remote computer 20 as shown in FIG. 2 mayhave different bandwidths and speeds. As such, when update data is readfrom the FPGA 40, its transmission to certain remote computers 20 maytake longer than its transmission to others.

As a result, it is possible for each client's video image to becomestale, that is, not an accurate reproduction of the reference image. TheKVM 14 preferably includes a tile staleness buffer 43 for each client.The purpose of the time staleness buffer is to minimize video imagestaleness for each remote computer while adapting the transmission ofchanged tiles to the speed of the channel to the remote computer. Thepreferred implementation of the tile staleness buffer 43 is shownschematically in FIG. 6. In the preferred embodiment, the buffer 43 isimplemented in the memory space of the CPU 36. However, it will beappreciated that the buffer 43 can be implemented in other ways andstill fall within the scope of the invention.

As described above, each time a tile changes in a new video frame, thattile is sent to the FPGA's tile output buffer 32, where it is extractedfor transmission to the remote computers 20. The reference frame storagebuffer 26 contains the most recent version of each tile received fromthe tile output buffer 32. Preferably, the reference frame storagebuffer 26 also maintains an individual reference buffer tilestampassociated with and corresponding to each tile. These tilestamps arepreferably generated by the CPU 36. The individual tilestamps areincremented (i.e. are assigned a value) each time a new version of thecorresponding tile is written to the reference frame storage buffer 26.The buffer 26 also preferably maintains a reference buffer row tilestampcorresponding to each row of tiles.

In the preferred embodiment, the row and individual tilestamps of thebuffer 26 are incremented by a single counter. Each time a changed tileis read from the FPGA 40, the counter, preferably a 32-bit binarynumber, is incremented by one. For each changed tile read from the FPGA40, the corresponding individual tilestamp in the buffer 26 is given thevalue of the counter. The individual tilestamp of the next changed tilecomprises that value plus one, the individual tilestamp of the changedtile after that comprises that value plus two, and so on. When the32-bit counter reaches its maximum, it wraps around to zero andcontinues incrementing by one for each changed tile read by the FPGA 40.It will be appreciated that the tilestamps can be determined by othermeans, such as, for example, by having a separate counter for eachtilestamp. What is important is that the tilestamps in the buffer beavailable for use in determining tile staleness.

The purpose of the reference buffer row tilestamps is to indicate thepresence of recently updated tiles in the corresponding row. Therefore,in the preferred embodiment, the row tilestamps of the buffer 26 are setto and comprise the value of the tilestamp of the most recently changedtile in the row.

Also, for each client, a tile staleness buffer 43 is maintained. Thetile staleness buffer 43 contains an array of individual tilestamps 45.Each individual tilestamp 45 corresponds to a particular tile in thevideo picture. The buffer 43 further includes a row tilestamp 47corresponding to each row of tiles in the video picture.

For each client, there is a scanner 49 (preferably comprising a softwaremodule in the CPU 36). The scanner continuously scans down each rowtilestamp 47 in the staleness buffer 43, comparing it to thecorresponding row tilestamp in the reference frame storage buffer 26.For any row where the tilestamps do not match, the scanner scans thatrow to determine which individual tilestamps do not match. As each ofthese is found, the scanner 49 causes the current tiles from thereference buffer 26 corresponding to the non-matching tilestamps to betransmitted to the client. Also, the non-matching tilestamps 45 in thetile staleness buffer 43 are updated to match the correspondingtilestamp values in the reference frame storage buffer. Once all of thetilestamps in a particular row have been updated, and the correspondingtiles queued transmitted to the client, the row tilestamp 47 is updatedto the value of the corresponding reference buffer row tilestamp.

Each scanner 49 will be programmed to scan at a speed consistent withthe speed and bandwidth of the communication channel to thecorresponding client. If the channel to a particular client is fast, thescanner 49 will scan through the tilestamps faster, and update tileswill be sent faster. If the channel to a particular client is slow, thescanner 49 will scan through the tilestamps more slowly, and updatetiles will be transmitted at a slower rate. Preferably, each scanner 49will be programmed with a scanning speed adapted to produce the fastesttransmission possible on the corresponding channel.

It will be appreciated that, depending on the speed of a particularscanner 49 and its corresponding client communication channel, a tilemay be updated more than once in the reference frame storage buffer 26before it is transmitted to a particular client. The reason is that thechannel to the client may be too slow to permit faster transmission. Ofcourse, it is most preferable for all update tiles to be promptlytransmitted to the client. However, the speed of a particular channelsometimes renders this unfeasible.

It will be also be appreciated that each scanner 49 and buffer 26functions to insure that the most recent version of each update tile issent to the client. This results from the fact that the buffer 26 holdsthe most recently updated version of each time that has been captured.When the scanner 49 reaches a particular tilestamp that does not matchthe corresponding individual reference buffer tilestamp, thecorresponding tile, in its most recently updated form, is transmitted tothe remote computer 20 from the buffer 26. This is done regardless ofhow many times the tile had been updated in the buffer 26 since it waslast transmitted to the remote computer.

It will be also be appreciated that, at the remote computer's end of aslow or low bandwidth channel, the motion on the video screen will oftenappear jerky because the screen is updated slowly, and some updates aremissed. The remote computer's screen may be updated relatively slowlyand infrequently. However, by ensuring that only the most recentversions of tiles are transmitted, the time between when inputs (such askeyboard and mouse) are made at the remote computer 20, and when theyappear on the remote screen, is minimized. This reduction in inputresponse time improves the usability of the remote computer 20. Bycontrast, if all versions of the tiles were queued and eventually sent,input response time would increase to the detriment of usability.

It will be appreciated that one of the factors that increases usabilityfor a user of the remote computer 20 is seeing inputs (such as keyboardand mouse inputs) reflected promptly on the screen. Thus, when theremote user moves his mouse, ideally, the mouse will move promptly onthe screen. This result, however, can be difficult to achieve, becausethe mouse signal has to travel from the remote computer 20 to the targetcomputer 12, whose video signal gets updated. The video signal then hasto travel to the KVM 14, get processed, and the relevant update data hasto be sent to the remote computer 20, at which time the mouse movementappears on the remote computer screen. When there is a fast,high-bandwidth connection between the KVM 14 and remote computer 20, theappearance of mouse movement on the remote screen will be reasonablyprompt. However, in low-bandwidth conditions, there may be a large timelag between when the mouse is moved and when the movement shows up onthe remote screen.

For this reason, the KVM 14 preferably includes a mouse anticipationalgorithm. The KVM 14 maintains in the CPU 36 a representation of theabsolute position of the mouse on the remote screen. This is the initialposition of the mouse before a mouse movement takes place. When theremote user moves the mouse, the video signal from the target reachesthe KVM 14, indicating that the mouse has moved, and the representationis updated to reflect the movement.

The CPU 36 is programmed to cause the tile staleness buffer's tilescanner 49 to jump to the start of the row of the tile(s) containing theold position once these tiles have been extracted by the CPU 36 from thetile output buffer 32. These tiles are scanned and the relevant ones areupdated to reflect the fact that the mouse has moved, and the updatedtiles are queued for transmission. The scanner 49 moves to the row(s) oftiles containing the anticipated mouse position. These row(s) arescanned and updated, with the changed tile or tiles being queued fortransmission. Once these steps are completed, the scanner returns to itsinitial position i.e. the position it was at before jumping in responseto the change of mouse position.

In this way, when an indication is received that the mouse has moved,the preprogrammed updating sequence by which the scanner 49 updates theremote computer's video is interrupted. The video of the remote computer20 is updated to reflect the mouse movement, and the preprogrammedsequence of the scanner 49 is resumed.

It will be appreciated that, because a mouse movement causes therelevant tiles to be immediately updated, this feature has the effect ofgiving mouse movements higher priority in the update sequence than othertypes of video signal changes. In other words, when a mouse movementoccurs, the remote computer's video screen is updated to reflect themouse movement before other pending updates are made even if those otherpending updates would otherwise have been made sooner. The result isthat mouse movements appear on the remote screen faster than they wouldwithout the increase in priority. This beneficial effect is morepronounced for remote computers connected to the KVM 14 by low bandwidthconnections.

As explained above, standard video modes (such as the VESA standardmodes) define the number of pixels for each line, and the number ofpixels between each H-sync pulse and the active video region. Similarly,standard video modes define the number of lines between the V-sync andthe active video region. Therefore, if such a standard video mode is inuse, the active video portion can be positioned accurately, so that itfills the entire screen but does not extend beyond the screen. (In thiscontext, “active video region” means the portion of the frame that isintended to appear on the screen and be seen by a user. The part of thescreen outside the active video region is typically referred to as the“blanking” portion of the screen.)

However, also as described above, in some cases, the video signal beingreceived from the target computer 12 by the KVM 14 cannot beconclusively matched with any of the standard video resolutions/modes inthe table. Under these circumstances, the GTF is used to estimatevarious aspects of the video resolution, including the number of pixelsbetween the H-sync and the active video region, and the number of linesbetween the V-sync and the active video region. However, the GTF onlyprovides an estimate of the size of the active video region, and theestimate may be wrong. In addition, even when the correct videoresolution is known from the table, position of the H-sync relative tothe screen pixels may get shifted as the video signal travels throughcircuitry such as the analog KVM switch 16. Therefore, in one aspect,the present invention preferably includes a video centering method i.e.a method for properly positioning the video frame on the screen.

Typically, video signals use the colour black in the blanking portion ofthe frame. By contrast, the active video region will usually includesome non-black pixels. Thus, as a first approximation, the CPU 36programs the FPGA 40 to place the first non-black pixel (i.e. thenon-black pixel closest to the top of the frame) at the top left comerof the screen. In other words, the first non-black pixel is assumed, asa first approximation, to be the first pixel of the active video region.It will be appreciated that, since part of the active video region ofthe current frame could be black, this first approximation is notnecessarily correct.

After the first approximation, the KVM 14 enters an iterative mode,where the approximation is adjusted to a progressively more preciseestimate of the location of the active video region. As each new frameis received, the KVM 14 measures the black areas along all four edges ofthe frame. If there are black areas along the top and the bottom of theframe, then the CPU 36 programs the FPGA 40 to adjust the verticalposition of the estimated active video region (i.e the region of theframe between the two black strips on the top and bottom, and betweenthe two black strips along the right and left sides) so as to equalizethe black strips along the top and bottom of the frame. If the totalblack area on the top and bottom is an odd number of lines, theestimated active video region is positioned so that the one extra linewill be located along the bottom. Similarly, if there are black stripsalong the right and left sides of the frame, the CPU 36 programs theFPGA 40 to adjust the horizontal position of the estimated active videoregion so as to equalize the black strips along the right and left ofthe frame. If the total black area on the right and left is an oddnumber of pixels, the estimated active video region is positioned sothat the one extra pixel will be located along the right.

Also, the CPU 36 will only adjust the position of the estimated activevideo region if the black area on the left or right, or on the top andbottom, decreases from one iteration to the next. If the amount of blackarea on the left and right, or top and bottom, increases, the CPU 36treats the increase as if the black area has remained unchanged. Thereason for this is that, if the black area on the frame edges increasesfrom one iteration to the next, it means that some of the edge area thatis currently black previously included non-black pixels. Assuming thatthe blanking portion of the frame is black, any area that previously hadnon-black pixels must be part of the active video region. Therefore, ifthe black edge area increases, it is assumed that the extra black areathat appeared in the last iteration is not part of the blanking portion,and that the position of the frame does not need to be adjusted.

In the preferred embodiment, the iterative mode will continue operatinguntil there is a video resolution change in the target computer's videosignal. When such a resolution change takes place, the KVM 14 reacquiresthe video signal and then restarts the video centering method justdescribed.

In another aspect of the invention, the KVM 14 preferably executescertain video tuning methods or algorithms described below. It will beappreciated that when the video signal is received in analog form by theADC 22, the ADC should ideally sample the video signal at the points onthe signal that are most likely to accurately represent the colour ofthe pixel. The incoming analog video signal represents a series ofpixels. At the borders between the pixels, the signal shifts in order toestablish itself at the voltage value corresponding to the next pixel.The time allotted for each pixel is generally constant for eachparticular video resolution. Thus, ideally, the video signal will besampled in the middle of the time allotted for each pixel. This allowsthe ADC 22 to determine the correct analog signal voltage correspondingto the relevant pixel, and to convert that voltage to a digital valuerepresenting the pixel's colour.

Thus, ideally, the ADC's sampling clock will cause the ADC 22 to sampleat the correct points. Such a scenario is illustrated in FIG. 7. In thisfigure, the sampling clock's waveform is shown. In this example,sampling takes place on the clock's rising edge. The incoming analogvideo waveform is also shown. The sampling clock's rising edges line upwith the mid-point of the time allotted for each pixel. In the examplegiven, the analog waveform is flat at the point of sampling.

FIG. 8 illustrates a scenario in which the sampling takes place at theedges of the times allotted for each pixel. These edge periods areperiods of uncertainty in the analog video signal, during which thesignal is switching from the value representing the previous pixel tothe value representing the next pixel. Sampling at these points in thesignal has negative consequences. First, the sampled value is likely tobe unrepresentative of the pixel, because, in many cases, by the timethe sampling takes place, the signal has started to shift to a newvalue, or, looked at differently, has not reached its new value. Also,sampling at the point of uncertainty causes pixel dither. Pixel ditheroccurs when a pixel shifts in colour on the remote screen betweenframes, even though the intended colour of the pixel has not changed.When sampling takes place in the uncertainty range as shown in FIG. 8,pixels on the remote screen will dither between different values evenwhen the pixel value as generated by the target computer has notchanged, because the uncertainty will cause randomness in the actualsampled value at the ADC 22.

It will be appreciated that pixel dither has some negative consequences.One of these is blurry video at the remote computer, which is the visualeffect that results from pixels dithering back and forth betweendifferent colours. Another is excessive data generation. As describedabove, the KVM 14 receives each new frame of video, determines thedifferences from the previous frame, and transmits to the remotecomputer all tiles containing pixels that have changed. If pixel ditheris present, many tiles will appear to have pixels within them that havechanged, even though the intended value of these pixels has not changed.The result is a much heavier data processing and transmission load beingborne by the KVM 14.

Therefore, the present invention preferably includes a method oralgorithm for properly aligning the sampling clock so that the videosignal is sampled at or near the middle of the time allotted for eachpixel rather than at or near the edge of the time allotted for eachpixel. One possible such method operates on the basis that if pixeldifferences are minimized, that indicates a minimization of pixeldither, which in turn indicates that the pixel clock is properlyaligned. The method is preferably executed by the KVM 14 each time thevideo resolution changes.

To determine the optimum phase shift for the sampling clock relative-tothe video signal, the ADC 22 is adjusted by the CPU 36 to differentphase settings. For each setting, the difference counter 31 of FPGA 40counts the number of pixel differences from one pixel to the next.Preferably, the differences will be counted over several frames, to givethe ADC sampling clock time to settle on the new phase setting. The CPU36 then averages the total difference count over the several frames.This is repeated over different clock phase settings until the lowestdifference count is found. It is assumed that at the phase settingresulting in the lowest difference count, pixel jitter is minimized, andthe phase setting is optimized.

Typically the ADC will have 32 different phase settings. One way to findthe optimum phase is to try each setting in turn, and then choose thesetting that generated the lowest difference count. However, it will beappreciated that trying each of the 32 settings is not preferred,because doing so takes longer than is necessary to settle on the optimumphase setting, and because going through all 32 settings creates a lotof unnecessary bandwidth usage as pixel differences are calculated andtransmitted for each of the 32 settings.

Therefore, the optimum setting will preferably be found by initiallytrying every fourth setting of the ADC 22. This requires at most eighttrials. Then, the three settings are tried that are located between thetwo settings of the first eight trials that resulted in the lowestdifference counts. The setting, selected from these 11, that yielded thelowest number of pixel differences is selected as the optimum phasesetting. This method requires trying at most eleven phase settings. Itwill be appreciated that this approach reduces the bandwidth used infinding the optimum phase setting. As a result, pixel dither and theblurry screen images that result are reduced more quickly.

Although the above method is useful for finding the correct phasesetting for the ADC sampling clock, it is not the preferred method.Rather, the preferred method operates on the basis that for anyparticular screen content, there will be a greater average change fromone sampled pixel to the next if the sampling is done at the middle ofthe allotted time for each pixel than if the sampling is done at theedges. In other words, for an entire frame, the aggregate of theabsolute value of the changes in digital values between pixels will bemaximized if sampling is done at the middle of the allotted time foreach pixel. This is illustrated at FIG. 11. FIG. 11 shows an analogwaveform corresponding to a frame made up of alternating black and whitepixels. The black pixels are represented by the low portions of thewaveform, and the white pixels by the high portions.

For example, when eight-bit colour is being used, and the black pixelsare sampled at the middle of their allotted time, the sampling willproduce a digital value of zero after the analog-to-digital conversionis completed. Similarly, if the white pixels are sampled at the middleof their allotted time, the sampling will produce a digital value of 255after the analog-to-digital conversion is completed. Thus, the absolutevalue of the change from each pixel to the next in this alternatingblack-white frame is 255.

However, if the analog waveform is sampled during its transition period,the results will be different. During the transition period, the analogwaveform has already begun moving from the digital value for one pixelto the digital value for the next pixel. Thus, when the sampled voltageis converted to digital, the digital value will be neither zero nor 255,but some value in between. Furthermore, the absolute value of the changefrom one pixel to the next will be less than 255. In theory, if thesampling takes place in the middle of the transition period, the digitalvalue of each sample will be the same, even though the pixels arealternating between black and white.

Therefore, a more preferred method for determining the proper phasesetting for the ADC sampling clock is to find the setting where theaggregate absolute value of digital value changes between pixels, for anentire frame, is maximized. It will be appreciated, however, that evenif the pixel is not sampled at the middle of the allotted time, thetotal changes in digital value from one pixel to the next may bemaximized, as long as the sampling takes place well outside thetransition periods of the analog waveform. In other words, there may beseveral phase settings for the sampling clock of the ADC 22 whichmaximize the aggregate digital value changes between pixels for a wholeframe. Some of these phase settings may not cause sampling to take placeat the middle of the allotted time for each pixel.

Therefore, the most preferred method for finding the best phase settingfor the sample clock is to find the setting that minimizes the aggregateabsolute value of digital value changes between pixels, for an entireframe, and then to set the sampling clock's phase at the oppositesetting, i.e. the setting that is 180 degrees different. As explainedabove with respect to the waveform shown in FIG. 11, in theory, samplingat the middle of the transition between pixels will minimize the changesin digital value between one sample and the next. The middle of thetransition period is 180 degrees away from the middle of the timeallotted for each pixel. Therefore, by finding the phase setting thatminimizes the changes in digital value, and by setting the phase 180degrees away, the clock is set to sample at the middle of the timeallotted for each pixel. It has been found that, even when the incomingvideo signal is not alternating black and white as in FIG. 11, the totalamount of change between pixels tends to be minimized when sampling isdone at the middle of the transition areas.

Thus, most preferably, the method for determining the phase of the ADCsampling clock is as follows: The phase settings of the ADC are movedfrom one setting to the next. For each setting, a number of pixels(preferably a frame's worth) are sampled and converted to digitalvalues. For the entire number of pixels, the absolute value of thedigital-value-change from each pixel to the next is calculated andsummed over the whole number of pixels. A first phase setting thatminimizes this sum is identified, and a second phase setting that isexactly 180 degrees away from the first phase setting is identified. TheADC sampling clock is set to the second phase setting. It will beappreciated that, though unlikely, it is possible that the ADC 22 willhave no second phase setting that is 180 degrees from the first, due tothe limited number of actual phase settings implemented in the ADC 22.If this is the case, then the second phase setting will be the phasesetting that is closest to being 180 degrees out of phase with the firstphase setting.

It will be appreciated that the most preferred method just described ismost preferred in part because it has been found to be effective inproperly adjusting the phase of the ADC sampling clock. It has also beefound that the efficacy of the method is not unduly dependent of noisevalues within the ADC 22 and on the video signal coming from the targetcomputer.

It will be appreciated that this method may be executed in the CPU 36 orthe FPGA 40. Using the FPGA 40, the calculation of the sums can becompleted more quickly. However, the execution time of this method isdependent not only on these calculations, but also on time it takes forthe ADC 22 to switch from one phase setting to the next. To reduce thetotal time taken for changing phase settings, it is possible to use onlya subset of the ADC's available phase settings in executing the method,rather than all of them. However, it will be appreciated that using allof the phase settings for the phase adjustment algorithm maximizes thelikelihood of finding the optimal phase setting.

Most preferably, while the phase adjustment method is being executed,only average colour for each changed tile is sent, rather than all ofthe pixels for each tile. The reason is that, while the phase adjustmentmethod is being executed, a substantial proportion of the frames(primarily those where the sampling is done at the worst phase settings)be received inaccurately because of the poor phase setting. Thus, thereis little benefit to sending full pixel data for the changed tile. Oncethe phase is adjusted, the full data for the changed tiles is sent.

It will be appreciated that this most preferred phase adjustmentalgorithm works best with screen content that includes high frequencymatter i.e matter where there is rapid change between digital valuesbetween pixels. The test pattern 60 described below is an example ofsuch matter. Text is another, more common example of such high frequencymatter, because with text, there has to be a substantial contrastbetween the text itself and the background. It will also be appreciated,however, that it is not necessary for the screen to be filled with highfrequency matter such as text. A relatively small amount of text will besufficient for the execution of this method.

It has been found that this method will generally produce good results,even if the video screen content changes from one frame to the next.However, although a fully stable picture is not necessary, the methodworks best if there are not major changes in the video from one frame tothe next while the method is being executed.

In addition to determining the correct phase shift for the samplingclock, there are other settings of the ADC 22 that are relevant to thequality of the video displayed at the remote computer 20. These includethe gain and offset of the ADC 22. Adjusting the gain changes themaximum and minimum values of the signal presented to the ADC's samplingcircuit. Thus, for example, a signal initially varying in voltagebetween 0 and 1 volt will vary between 0 and 2 volts if it has a gain oftwo applied to it prior to entering the sampling circuit.

The offset adjustment does not affect the size of the voltage range ofthe incoming signal. Rather, offset affects the location of theboundaries of the voltage range. Thus, for example, a signal varyingbetween zero and one volt which goes through an offset of negative 0.5volts will then vary between negative 0.5 and 0.5 volts. It will beappreciated by those skilled in the art that adjusting the gain of thesignal affects its offset, but changing the offset of a signal does notaffect its gain.

Preferably, the KVM 14 will have stored in the CPU's non-volatile memoryoptimum settings for the gain and offset. These settings are determinedby using the test pattern 60 shown in FIG. 9 (described below), and afactory reference video source. Preferably, the KVM 14 is configured toallow a user to revert to these settings at any time. It will beappreciated, however, that under some circumstances the gain and offsetmay need to be adjusted. For example, the appropriate gain and offsetmay need to be adjusted in response to the specific characteristics ofthe ADC 22, the length of the cable leading from the target 12 to theKVM 14, and the characteristics of the circuit in the target 12 thatgenerates the video signal. The appropriate gain may also be affected bythe specific video resolution in use.

Preferably, the KVM is configured to allow the user to create and storeoptimum gain, offset and phase settings for each one of a variety ofsets of circumstances, such as, for example, different videoresolutions. Preferably, this is done using the test pattern 60 shown inFIG. 9 as described below.

The preferred test pattern 60 shown at FIG. 9 provides a known colourreference for use in calibrating gain and offset. It consists of anupper portion 62 and a lower portion 64. Each includes alternating blacksquares 66 and white squares 68. In between the upper portion 62 and thelower portion 64 is located a colour gradient in the form of a red strip70, a green strip 72 and a blue strip 74. Each of the strips graduallyincreases in brightness from black on the left (value 0) to thebrightest level of the colour on the right (value 255), which for thepurposes of this specification will be called “white”. Throughout eachstrip, each value of the colour is three pixels wide (assuming 8 bitsper colour).

Each square 66 or 68 in the upper and lower portions 62,64 is threetiles high and three tiles wide, so that each square encapsulates atleast one full tile regardless of where the pattern 60 is positioned onthe screen. The black and white squares 66,68 are configured andpositioned so that the encapsulated tiles form a distinct sequence, orregistration mark. The registration mark is used by the CPU 36 to locatethe search pattern as it searches for the pattern 60 on the screen. Oncelocated, the CPU 36 can locate the first pixel of the colour gradientportion of the pattern.

It will be appreciated that, for each colour, the test pattern 60contains the full range of values available, which corresponds to thefill range of video signal values coming from the target computer 12.Thus, adjusting the offset will cause the middle value for each colourto move to the right if the offset is adjusted upward and to the left ifit is adjusted downward. The optimum offset is the one that causes themiddle value of each colour to be located precisely in the middle of thescreen. This is because, by definition, the optimum offset is the offsetvalue at which the middle of the voltage range precisely matches themiddle of the range of values for each colour. The pattern 60 isconfigured so that the colour values are centred when the offset isoptimized. Thus, the CPU 36 adjusts the ADC's offset and searches thepattern 60 until the offset that precisely centres the middle colourvalues is found. That is the optimum offset.

Next, the gain is adjusted. Because the test pattern 60 contains thefull range of values available for each colour, the optimum gain is thegain at which the strips 70, 72 and 74 extend all the way across thescreen, but do not extend past the screen edges. At the optimum gain,when each colour has eight bits, the first three pixels at the left ofeach strip will be black, and the last three on the right will be white.When four bits per colour are used, as is the case in some embodiments,the first 48 pixels on the left will be black, and the last 48 on theright will be white. Thus, the CPU 36 determines, based on the number ofbits being used for colour, whether the gain is optimum, by determiningthe position of the first non-black and last non-white pixels in eachstrip 70, 72, 74. If the first non-black pixels and last non-whitepixels are positioned at the correct minimum distance from the edges ofthe screen, then the gain is optimized. If not, the CPU 36 adjusts thegain until it is optimized. It will be appreciated that the pattern 60is configured and sized such that the pattern 60 will be correctlypositioned on the screen when the gain is optimized.

Since the adjustment of gain affects the offset, the offset must bechecked again to determine if it is optimized. If it's not, the offsetand gain must be adjusted again iteratively until the offset is checkedafter a gain adjustment and found to be optimized. It has been foundthat within three iterations, the offset and gain have usually convergedto their optimum points.

It will be appreciated that, with four-bit colour, there will be abanding effect on the strips 70,72,74. This results from the same rangeof colour being represented with fewer digital values. One result ofbinning is uncertainty at the edges of the bins, where the preciseborder between the values is uncertain. Thus, in determining the correctgain and offset, the CPU 36 averages over the area of uncertainty todetermine the location where one colour value changes to the next. Thisis necessary to permit the CPU 36 to determine where the first non-blackand last non-white pixels are located.

As explained above, software updates and upgrades are tasks commonlyperformed by server maintenance personnel. Historically, softwareupgrades and updates have had to be done locally at the target computer12. The person doing the upgrade would sit at the target computer,insert the floppy disk or CDROM containing the upgrade, change the CDROMor floppy if necessary, wait for the upgrade to be completed, and rebootthe computer if necessary. It will be appreciated that this process fordoing software upgrades can be very tedious and time consuming,particularly if there are many servers in the network that requireupgrades, and if the servers are not conveniently located formaintenance personnel.

Therefore, the KVM 14 preferably includes a system and method forfacilitating software upgrading of the target computer 12 from theremote computer 20. Preferably, the CPU 36 is programmed so as topresent to the remote computer 20 a memory device comprising memoryspace associated with the KVM 14, preferably in the form of virtualfloppy disk drive or other virtual memory disk device. The amount ofmemory available in the virtual memory disk to be inserted in thevirtual drive depends on the amount of free memory in the CPU 36 andSDRAM 38. The memory space is preferably contiguous but may benon-contiguous.

To perform a software or other upgrade, the user of the remote computer20 transfers the relevant software or other data on to the virtual diskof the KVM 14. The user then “inserts” the virtual disk into the virtualdrive i.e. the user causes the memory space of the virtual floppy to beaccessible to the target computer 12. In other words, the virtual memorydisk drive containing the disk is thus mounted to the target computer12. Preferably, the virtual floppy is connected via the USB (UniversalSerial Bus) protocol to the target computer 12. Once this is done, thetarget computer 12, because of the nature of the USB protocol,recognizes that a new device having file capability has been added. Toperform the software upgrade, the remote user, through his control ofthe target computer 12, causes the target computer to accept thesoftware update from the virtual floppy in much the same way that itwould be accepted from a local, physical floppy. The remote user canthen cause the target computer to “eject” the floppy. The disk is thusunmounted from the target computer 12 and remounted to the remotecomputer 10, which gives the remote user access to it for furtherupgrades, if desired.

Preferably, the virtual floppy disk is connected to the target computervia a USB connection.

As will be appreciated by those skilled in the art, actual floppy disksmust typically be formatted prior to use. Formatting, inter alia,divides the memory space of the floppy disk into sectors. The datasubsequently placed on the disk can then be located according to itstrack and sector. Actual disks used for booting computers have the bootdata at particular locations on the disk.

It will be appreciated that one of the tasks sometimes required ofmaintenance personnel is the rebooting of the target computer 12, eitherbecause the target computer has crashed, or because rebooting may benecessary after a software upgrade. Some target computers 12 may beunable to reboot from an arbitrarily sized and formatted memory device,but must be booted from a memory device that is an actual floppy, orconfigured as an actual floppy. Thus, preferably, the virtual floppywill be configurable like an actual floppy. The virtual floppy willpreferably be sized as an actual floppy, and will preferably will havethe same system of memory segmentation i.e. be formattable into sectorslike an actual floppy. So, for example, the virtual floppy of thepresent invention will preferably be sizable at 1.44 megabytes to mimica comparable actual floppy, and will preferably be formattable intosectors so as to mimic an actual 1.44 megabyte floppy.

With some target computers, when booting takes places, the targetcomputer 12 is programmed to check at a particular location on the bootdisk for the boot commands and data. If the boot commands and data arenot found at that location, such a target computer 12 will not boot. Toincrease the likelihood that the target computer 12 will be able to bootfrom the floppy, the KVM 14 is preferably configured to permit an imageof an actual boot floppy to be downloaded onto the virtual floppy.Downloading such an image involves copying the actual floppy byte forbyte into the virtual floppy, with each byte of data from a particularlocation on the actual floppy being saved at the same location on thevirtual floppy. The result is that, when the target computer 12 checksthe virtual floppy for boot commands and data at a particular locationon the virtual floppy, it will find them at the expected location andboot accordingly.

Preferably, the KVM 14 will also be configurable to operate in RAMDiskmode. Thus, rather than presenting to the target computer 12 thepreferred virtual floppy as described above, the RAMDisk need not be aparticular size or format. However, the RAMDisk, like the virtualfloppy, can be used to transfer data, such as software upgrades, to thetarget computer 12. The RAMDisk, like the virtual floppy, will typicallycomprise available memory from the CPU 36 or SDRAM 38.

As another alternative, which can be implemented with or without thevirtual floppy and/or the RAMDisk, the KVM 14 will be configured topresent a bootable CDROM to the target computer. While a virtual floppycan be emulated within the memory space of the KVM 14 (either in theCPU's memory or the SDRAM's), as described above, a CDROM contains toomuch memory to be emulated in the memory space of the KVM 14. Thus, inthe preferred embodiment, the CDROM image presented to the targetcomputer is contained on a separate file server connected to the KVM 14via the internet. The KVM 14 is configured to permit data from a CDROMon the remote computer 20 to be downloaded, via the KVM 14 and theinternet 18, to the file server which contains the virtual CDROM. Oncethe data is downloaded, the KVM 14 is configured to permit the remotecomputer 20 to mount the virtual CDROM, that is, make the virtual CDROMavailable for use by the target computer 12. Once the virtual CDROM ismounted, the target computer 12 (which is under the control of theremote computer 20) can download software updates, boot data or otherdata from the virtual CDROM via the internet 18 and the KVM 14. Once thevirtual CDROM has been used to update, boot or otherwise transfer datato the target computer 12, the target computer 12 (which is beingcontrolled by the remote computer 20), unmounts the virtual CDROM. Thus,the virtual CDROM is no longer available to the target computer 12, butis now available to the remote computer 20 so that the remote computer20 can download new data or a new CDROM image to the file server for useon the target computer.

It will be appreciated that most keyboards and mice operate using thePS/2 protocol. Under PS/2, the information protocols are different forkeyboard and for mouse, so separate connections are required for each.With respect to the KVM 14, if the keyboard and mouse of the remotecomputer 20 operate under PS/2, then a separate connection is requiredbetween each of the remote keyboard and mouse and the KVM 14.Preferably, however, the KVM 14 further includes a USB keyboard andmouse connection between the KVM 14 and the target computer 12. The PS/2events that are received by the KVM 14 from the remote computer 20 aretranslated to USB events for transmission to the target computer 12.

It will be appreciated that the use of the USB protocol for transmittingkeyboard and mouse data has certain advantages. First, in general, theUSB protocol involves less translation of information at the targetcomputer 12 than the use of the PS/2 protocol. Therefore, the USBconnection is more reliable because translation errors are less likely.

Second, under the PS/2 protocol, mouse movements are represented asrelative movements. In other words, under the PS/2 protocol, when themouse moves, the information sent is simply that the mouse has move acertain horizontal and a certain vertical distance from its originalposition. The actual, absolute position to which the mouse has moved isnot provided. The result is that, under the PS/2 protocol, if therepresentation of the original position of the mouse before the movementhas been corrupted, then the representation of the mouse position afterthe movement will also be inaccurate. By contrast, the USB protocolallows the mouse movement to be communicated by simply transmitting thenew absolute position of the mouse after the movement. This allows agreater accuracy in the representation of the mouse position. It alsopermits the new mouse position to be more quickly and efficientlyincorporated into the video signal of the target computer 12. Once, themouse movement is reflected in the video signal of the target computer,the mouse anticipation algorithm described above will operate.

Third, the USB protocol allows for a single connection between the KVM14 and the target computer 12, which carries both the keyboard and mouseinformation. This is in contrast with the PS/2 protocol, which requiresa connection for each of the keyboard and mouse.

While the foregoing embodiments of the present invention have been setforth in considerable detail for the purpose of making a completedisclosure of the invention, it will be apparent to those skilled in theart that various modifications can be made to the device withoutdeparting from the broad scope of the invention as defined in theattached claims. Some of these variations are discussed above and otherswill be apparent to those skilled in the art. For example, thoughpreferred, the comparison module need not comprise an FPGA 40 to fallwithin the scope of the invention. Rather, the functions of the CPU 36and the FPGA 40 can be implemented in software, hardware or combinationsthereof and still be comprehended by the invention. Similarly, thememory hardware and functions described herein can be implemented in anyfunctionally suitable manner and be comprehended by the invention. Othermethods, besides the preferred ones described, may be used to addressproblems of tile staleness, video resolution detection, and excessivebandwidth usage. As another example, the invention comprehendsmonitoring other signals besides the raw and regenerated H-sync todetermine whether to reacquire the video signal. Thus, for example,monitoring the raw and regenerated V-syncs is possible, though notpreferred.

1. A method of capturing a new video frame from a target computer topermit the updating of a remote computer with the video output of thetarget computer, wherein said new video frame comprises a series of newframe pixels to be captured, which series includes an initial new framepixel to be captured and a final new frame pixel to be captured, the newframe pixels to be captured being represented in a video signal from thetarget computer, the method comprising the steps of, beginning with theinitial new frame pixel: (A) receiving for comparison a new frame pixelfrom the series; then (B) comparing the new frame pixel to acorresponding reference frame pixel; then (C) if the final new framepixel has not been captured, repeating steps A and B for the next newframe pixel in the series.
 2. The method of claim 1, wherein said step Bcomprises the steps of determining if said new frame pixel is differentfrom said corresponding reference frame pixel, and, if said new framepixel is different from said corresponding reference frame pixel,flagging a new frame update unit corresponding to said new frame pixelif said corresponding new frame update unit has not already beenflagged.
 3. The method of claim 1, the method comprising the step ofconverting each new frame pixel from analog to digital before said newframe pixel is received.
 4. The method of claim 2, wherein said newframe update unit comprises a tile representing a plurality of pixels.5. The method of claim 4, wherein the tile represents an area of sixteenby sixteen pixels.
 6. The method of claim 1, wherein said step Bincludes the step of reading the corresponding reference frame pixelfrom a reference buffer, the reading being timed to permit comparison ofthe new frame pixel to the corresponding reference frame pixel.
 7. Themethod of claim 1, wherein said step A further comprises the step ofstoring the new frame pixel in a new frame storage location, wherein thestoring step is timed to permit comparison between the new frame pixeland the corresponding reference frame pixel.
 8. A method of capturing asequence of new video frames, the method comprising performing themethod of claim 1 on each new video frame in the sequence.
 9. A methodof capturing a sequence of new video frames, the method comprisingperforming the method of claim 2 on each new video frame in thesequence.
 10. A method of capturing a sequence of new video frames, themethod comprising performing the method of claim 6 on each new videoframe in the sequence.
 11. A method of capturing a sequence of new videoframes, the method comprising performing the method of claim 7 on eachnew video frame in the sequence.
 12. A system for capturing a new videoframe from a target computer to permit the updating of a remote computerdisplaying the video output of the target computer, wherein the newvideo frame comprises a series of new frame pixels to be captured, whichseries includes an initial new frame pixel to be captured and a finalnew frame pixel to be captured, the system comprising a comparisonmodule and a memory module operatively connected to said comparisonmodule, the comparison module being configured to receive for comparisonthe initial new frame pixel from said target computer; then, compare theinitial new frame pixel to a corresponding reference frame pixel andsave the initial new video frame pixel in the memory module; then, ifthe final new frame pixel has not been captured, repeat said receiving,comparing and saving steps in respect of the next new frame pixel in theseries.
 13. The system of claim 12, wherein the memory module contains areference video frame comprising reference frame pixels, and whereinsaid comparison module is programmed to read said reference frame pixelsfrom said memory module wherein the reading is timed to permit thecomparing of said new frame pixels to said corresponding reference framepixels.
 14. The system of claim 12, wherein said system further includesan analog to digital converter, operatively connected to said comparisonmodule, for converting said new video frame from analog to digital. 15.The system of claim 12, wherein the comparison module comprises aprogrammable gate array.
 16. The system of claim 15, wherein the memorymodule comprises synchronous dynamic random access memory.
 17. Thesystem of claim 12, wherein the comparison module is programmed tocompare said new frame pixel to a corresponding reference frame pixel by(1) determining if said new frame pixel is different from saidcorresponding reference frame pixel; and (2) if said new frame pixel isdifferent from said corresponding reference frame pixel, flagging a newframe update unit corresponding to said new frame pixel if saidcorresponding new frame update unit has not already been flagged. 18.The system of claim 17, wherein said new frame update unit comprises atile representing a plurality of pixels.
 19. The system of claim 18,wherein the tile represents an area of 16 pixels by sixteen pixels. 20.A method of providing updated video from a target computer for updatinga remote computer, the method comprising the steps of: (A) performingthe method of comparing as claimed in claim 2; (B) searching for flagsindicating flagged new frame update units; and (C) moving flagged newframe update units to a reference frame output location for eventualtransmission to the remote computer;
 21. The method of claim 20, whereinsaid new frame update unit comprises a tile representing a plurality ofpixels.
 22. The method of claim 20, wherein the method further comprisesthe step of generating an interrupt request to a CPU in response tofinding one or more flags in step B, whereby the CPU is alerted to thepresence of flagged new frame update units.
 23. The method of claim 20,wherein said step C further includes the step of moving to saidreference frame output location, for eventual transmission to the remotecomputer, screen location data for each said flagged new frame updateunit.
 24. The method of claim 23, wherein the method further comprisesthe step of generating average colour data associated which each saidnew frame update unit, and wherein said step C further includes the stepof moving, to said reference frame output location, said average colourdata, whereby the average colour data can be made available at theremote computer for scaling purposes.
 25. The method of claim 23,wherein said method further comprises the step of determining, for eachflagged new frame update unit, if the new frame update unit is of asingle colour, and wherein said step C further comprises the step ofsetting a single colour flag if the flagged new frame update unit is ofa single colour; whereby bandwidth usage in respect of single colourframes can be reduced by transmitting to the remote computer only thesingle colour and the screen location of the single colour frame.
 26. Amethod of determining whether to reacquire a video signal from a targetcomputer, wherein the video signal of the target computer is beingcompared with reference video, and update data is being generated fromthe comparison for transmission to a remote computer, the methodcomprising the steps of: (A) monitoring a first condition indicatinginformation about a resolution of the video signal; (B) monitoring asecond condition indicating information about the resolution of thevideo signal; (C) if the second condition changes so as to indicate achange in the resolution, but the first condition does not change so asto indicate a change in the resolution, suspending comparison and updatedata generation and continuing to monitor the first condition todetermine whether to reacquire the video signal; and (D) if the secondcondition continues to indicate a change in the resolution, and thefirst condition changes so as to indicate a change in the resolution,determining that the video signal will be reacquired.
 27. The method ofclaim 26, wherein the method further comprises the step of resumingcomparison and update data generation if the second condition recoversfrom its change and the first condition continues to indicate no changein resolution.
 28. A method as claimed in claim 27, wherein said firstcondition comprises a raw H-sync signal associated with the videosignal.
 29. A method as claimed in claim 28, wherein said secondcondition comprises a regenerated H-sync signal associated with saidcomparison and data generation of said video signal information.
 30. Amethod as claimed in claim 29 wherein said second condition comprises aregenerated H-sync signal created by an analog-to-digital converter thatis converting said video signal to a digital signal for comparison andupdate data generation.
 31. The method of claim 29 further comprisingthe step of resuming comparison and update data generation if theregenerated H-sync recovers from its change and the raw H-sync continuesto indicate no change in resolution.
 32. A method as claimed in claims31, the method further comprising the step of: if neither the resumingstep nor said step D has been performed within a predetermined time,determining that the video signal will be reacquired.
 33. The method ofclaim 32, wherein the predetermined time is 5 seconds.
 34. A method ofreacquiring a video signal from a target computer, wherein the videosignal of the target computer is being compared with reference video,and update data generated from the comparison for transmission to aremote computer, the method comprising the steps of (1) performing themethod of determining as claimed in claim 27; and (2) initiating andcompleting reacquisition of the video signal.
 35. A method of updatingvideo from a target computer on a remote computer, the method comprisingthe steps of: (I) comparing a video frame from the target computer toreference video; (ii) generating data in the comparing step for use inupdating the remote computer; (iii) reacquiring the video signal byperforming the method of claim 31; (iv) when the video signal has beenreacquired, resuming said comparing and generating steps.
 36. A digitalKVM system comprising: an analog-to-digital converter for digitizing anincoming video signal to produce a series of new frame pixel digitalvalues; a difference calculator for calculating the difference betweeneach new frame pixel digital value and a corresponding reference framepixel digital value, the difference calculator comprising a fieldprogrammable gate array.
 37. The digital KVM system of claim 36, whereinthe system further comprises an update data generator for generatingvideo update data to be transmitted to a remote computer.
 38. Thedigital KVM system of claim 37, wherein the update data generatorcomprises the field programmable gate array.
 39. A method for improvingthe promptness with which movement of a mouse at a remote computer isshown on the screen of the remote computer, wherein the mouse is used tocreate inputs to a target computer via a digital KVM, and the screen ofthe remote computer is updated by the digital KVM to display the videofrom the video signal of the target computer, the method comprising thesteps of: maintaining a representation of an initial position of themouse; receiving at the KVM an indication that the mouse has moved; inresponse to the indication, interrupting a preprogrammed updatingsequence of the KVM and updating the video of the remote computer toreflect the mouse movement; and resuming the preprogrammed sequence. 40.The method of claim 39, further comprising the step of changing therepresentation to reflect a new position resulting from movement of themouse.
 41. The method of claim 39, wherein the receiving step comprisesthe step of receiving at the KVM indication, associated with the videosignal, that the mouse has moved.
 42. A system for regulating thetransmission of video update units to M remote computers, M being awhole number greater than or equal to one, wherein video frameinformation is being received from a target computer and video updateunits being generated in response thereto, and wherein each remotecomputer is being updated with the update units via a correspondingcommunication channel having a corresponding speed, the systemcomprising: an update unit generator and an update unit output locationfor holding for transmission pending update units generated by theupdate unit generator; a scanner associated with each channel, each saidscanner being configured to cause transmission of the pending updateunits from the output location according to a preprogrammed sequence,each scanner having an operating speed that is coordinated with thespeed of the corresponding channel; the update unit generator, outputlocation and scanners being configured such that, if a pending updateunit is superseded by a new version of the pending update unit prior tobeing transmitted, the new version will be transmitted and the versionof the pending update unit that was superseded will not be transmitted.43. The system of claim 42, wherein the output location is configured tohold only a most recent version of each pending update unit, and notsuperseded pending update units.
 44. The system of claim 43, whereineach update unit comprises a tile corresponding to a region of videoscreen pixels.
 45. The system of claim 44, wherein the system furtherincludes output location individual tilestamps, the output locationindividual tilestamps being associated with said output location, withan output location individual tilestamp corresponding to each tile, thesystem further including output location row tilestamps corresponding toeach row of tiles, said output location row tilestamps being associatedwith the output location and corresponding to each row of tiles, theoutput location being configured such that the output locationindividual tilestamps are each incremented each time the correspondingtile is transferred to the output location for transmission.
 46. Thesystem of claim 45, wherein each output location row tilestamp isconfigured to be incremented so as to indicate when a tile in thecorresponding row has changed.
 47. The system of claim 46, wherein eachoutput location row tilestamp is incremented so as to comprise thetilestamp of the most recently changed tile in the corresponding row.48. The system of claim 45, the system further including a tilestampstorage location associated with each scanner and its correspondingremote computer, each scanner tilestamp storage location including astorage location individual tilestamp associated with each tile and astorage location row tilestamp associated with each row of tiles, eachscanner and corresponding tilestamp storage location being configuredsuch that the preprogrammed sequence comprises: (A) scanning eachstorage location row tilestamp; (B) comparing each storage location rowtilestamp to the corresponding output location row tilestamp; (C) if thestorage location row tilestamp differs from the corresponding outputlocation row tilestamp, determining that the corresponding row containsat least one tile to be transmitted; (D) scanning the storage locationindividual tilestamps corresponding to tiles within the correspondingrow, comparing them to the corresponding output location individualtilestamps, transmitting each tile for which a difference is foundbetween the corresponding storage location tilestamp and thecorresponding output location tilestamp, incrementing the correspondingstorage location tilestamp to make it equal in value to thecorresponding output location individual tilestamp, and resuming thesequence at step A.
 49. A device for permitting control of a targetcomputer by a remote computer, wherein the device is operativelyconnectable to the remote computer so as to receive remote computermouse and keyboard signals and transmit video update data to the remotecomputer, the device further being operatively connectable to the targetcomputer so as to provide the remote computer keyboard and mouse signalsas control inputs to the target computer and so as to receive a targetcomputer video signal for generation of video update data, the deviceincluding a virtual memory disk, the virtual floppy disk comprising amemory space associated with the device, the device being configured topermit a user of the remote computer to mount the device to the remotecomputer, transfer data to the virtual memory disk, and unmount thevirtual memory disk, the device further being configured to permit theuser, by controlling the target computer through the remote computer, tomount the virtual memory disk to the target computer, transfer the datato the target computer, and unmount the virtual memory disk from thetarget computer.
 50. The device of claim 49, wherein the memory space isconfigured so as to mimic the size and memory format a bootable floppydisk, and so as to permit the target computer to reboot from the memoryspace.
 51. The device of claim 50, wherein the device is configured topermit an image of the bootable floppy disk to be downloaded into thememory space, such that each byte from the bootable floppy disk is savedat the corresponding byte location of the virtual memory disk.
 52. Thedevice of claim 50, wherein the device is configured so as to connectthe virtual memory disk to the target computer via a USB connection. 53.The device of claim 49, wherein the virtual memory disk comprises avirtual CDROM residing on a server operatively connected to the device.54. The device of claim 53, wherein the device and virtual CDROM areconfigured to present a bootable CDROM to the target computer.